const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const JWT_TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 设置请求头
const headers = {
  'Authorization': `Bearer ${JWT_TOKEN}`,
  'Content-Type': 'application/json'
};

// 测试VIP用户的章节访问
async function testVipChapterAccess(shortsId, chapterId) {
  try {
    console.log(`👑 测试VIP用户访问短剧${shortsId}的章节${chapterId}...`);
    
    const response = await axios.get(
      `${BASE_URL}/shorts/chapter/video/${shortsId}/${chapterId}`,
      { headers }
    );
    
    console.log('✅ VIP访问成功:', JSON.stringify(response.data, null, 2));
    
    // 格式化输出
    const data = response.data;
    console.log(`\n📺 短剧ID: ${data.shortsId}`);
    console.log(`📖 章节ID: ${data.chapterId}`);
    console.log(`📝 章节标题: ${data.title}`);
    console.log(`🎥 视频URL: ${data.videoUrl || '暂无'}`);
    console.log(`🖼️ 封面: ${data.coverUrl || '暂无'}`);
    console.log(`⏱️ 时长: ${data.duration || 0}分钟`);
    console.log(`🔢 排序: ${data.sort}`);
    console.log(`💎 原积分: ${data.originalPoints}`);
    console.log(`💎 有效积分: ${data.effectivePoints}`);
    console.log(`👑 VIP用户: ${data.isVip ? '是' : '否'}`);
    console.log(`💰 免费: ${data.isFree ? '是' : '否'}`);
    console.log(`📋 订单ID: ${data.orderId || '无'}`);
    console.log(`💬 消息: ${data.message}`);
    
    // VIP特权验证
    if (data.isVip && data.effectivePoints === 0) {
      console.log('🎉 VIP特权生效：积分已优惠为0！');
    } else if (data.isVip && data.effectivePoints > 0) {
      console.log('⚠️  VIP特权未生效：积分未优惠');
    } else if (!data.isVip) {
      console.log('ℹ️  普通用户：按原积分计算');
    }
    
    return response.data;
  } catch (error) {
    console.error('❌ VIP访问失败:', error.response?.data || error.message);
    
    if (error.response?.status === 403) {
      console.log('💡 提示: 即使是VIP用户，某些特殊章节仍可能需要购买');
    } else if (error.response?.status === 400) {
      console.log('💡 提示: 请检查短剧ID和章节ID是否正确');
    } else if (error.response?.status === 401) {
      console.log('💡 提示: 请检查JWT token是否有效');
    }
  }
}

// 测试不同积分章节的VIP访问
async function testDifferentPointsChapters() {
  console.log('\n🎯 测试不同积分章节的VIP访问...\n');
  
  // 测试免费章节（积分为0）
  console.log('1️⃣ 测试免费章节（积分为0）');
  await testVipChapterAccess(1, 1);
  
  console.log('\n' + '─'.repeat(50));
  
  // 测试低积分章节（积分为5）
  console.log('2️⃣ 测试低积分章节（积分为5）');
  await testVipChapterAccess(1, 2);
  
  console.log('\n' + '─'.repeat(50));
  
  // 测试高积分章节（积分为20）
  console.log('3️⃣ 测试高积分章节（积分为20）');
  await testVipChapterAccess(1, 3);
}

// 测试VIP状态变化
async function testVipStatusChange() {
  console.log('\n🔄 测试VIP状态变化对积分的影响...\n');
  
  // 模拟VIP用户访问
  console.log('👑 模拟VIP用户访问（积分应变为0）');
  await testVipChapterAccess(1, 2);
  
  console.log('\n' + '─'.repeat(50));
  
  // 模拟普通用户访问（需要实际测试不同用户）
  console.log('👤 模拟普通用户访问（积分保持原值）');
  console.log('💡 提示: 需要更换JWT token为普通用户的token');
}

// 主测试函数
async function runVipTests() {
  console.log('🚀 开始测试VIP章节访问功能...\n');
  
  if (JWT_TOKEN === 'your_jwt_token_here') {
    console.log('⚠️  请先设置有效的JWT token');
    console.log('   在脚本中修改 JWT_TOKEN 变量的值\n');
    return;
  }
  
  // 1. 测试不同积分章节的VIP访问
  await testDifferentPointsChapters();
  
  console.log('\n' + '='.repeat(60));
  
  // 2. 测试VIP状态变化
  await testVipStatusChange();
  
  console.log('\n✨ VIP功能测试完成！');
  console.log('\n💡 测试要点:');
  console.log('   - VIP用户的章节积分应变为0');
  console.log('   - 非VIP用户保持原积分');
  console.log('   - 有效积分为0的章节可直接观看');
  console.log('   - 需要积分的章节仍需购买订单');
}

// 运行测试
runVipTests().catch(console.error); 